import { defineStore } from "pinia";
import { computed, reactive, ref, toRefs } from "vue";
import apis from '@/apis/index';

/**
 * 职级管理-页面-共享数据仓库
 */
export const useLevelStore = defineStore("level", () => {
  const levelListRef = ref([]);     // 职级列表
  const totalRef = ref(0);     // 列表长度
  const levelDetail = ref(null);    // 职级详情
  const isLoadingRef = ref(true);   // 是否正在加载
  const isClosedRef = ref(false);   // 是否处于关闭状态
  const isAttendanceLoadingRef = ref(true);
  
  // 更新职级列表
  async function updateLevelList(data:any) {
    levelListRef.value = data;
    // totalRef.value = data.length;
  }

  function updateTotal(data:any) {
    totalRef.value = data;
  }

  // 更新职级详情
  async function updateLevelDetail(data:any) {
    levelDetail.value = data;
  }

  // 设置搜索栏状态
  function setIsClosed(bool: boolean) {
    isClosedRef.value = bool;
  }

  // 设置加载状态
  function setIsLoading(bool: boolean, delay: number = 500) {
    // setTimeout(() => {
      isLoadingRef.value = bool;
    // }, delay);
  }

  // 初始化职级列表
  async function initLevelList(page = 1, size = 10, queryData = {}) {
    try {
      const params = {
        page,
        size,
        queryData,
      }
      console.log(params,'ppp')
      const res = await apis.level.getLevelList_API(params);
      console.log(res,'level-list');
      if (res) {
        // 更新数据
        await updateLevelList(res.data);
        updateTotal(res.total);
        console.log(levelListRef,'levelListRef')
        setIsLoading(false);
        // 修改加载状态
        // setTimeout(() => {
        //   isAttendanceLoadingRef.value = false;
        //   setIsLoading(false);
        // }, 1500);
      }
    } catch (error) {
      console.log(error, 'pinia获取职级列表数据失败');
      return;
    }
  }

  // 获取职级详情
  async function getLevelDetail() {
    try {
      const data = await apis.level.getLevelDetail_API();
      console.log(data,'level-detail');
      if (data) {
        // 更新数据
        await updateLevelDetail(data);
        console.log(levelDetail,'levelDetail')
        // 修改加载状态
        setTimeout(() => {
          isAttendanceLoadingRef.value = false;
        }, 1500);
      }
    } catch (error) {
      console.log(error, 'pinia获取职级详情数据失败');
      return;
    }
  }

  return {
    isClosedRef,
    setIsClosed,
    isLoadingRef,
    setIsLoading,
    levelListRef,
    levelDetail,
    totalRef,
    isAttendanceLoadingRef,
    initLevelList,
    getLevelDetail
  }
});